#ifndef _PLAYER_STATE_H_
#define _PLAYER_STATE_H_


#include "ControlState.h"
#include "Controls.h"

enum PSRV	// Player State Return Value
{
	PSRV_IDLE = 0,
	PSRV_MOVING_GROUND,
	PSRV_JUMPING,
	PSRV_FALLING,
	PSRV_ATTACK,
	PSRV_ATTACK_AIR,
	PSRV_DASH,
	PSRV_DASH_AIR,
	PSRV_WALL_SLIDING,
	PSRV_WALL_JUMP,
	PSRV_LAND,
	PSRV_DASH_RETRACT,
	PSRV_CLIMB,
	PSRV_CLIMB_DOWN,
	PSRV_TAKE_DAMAGE,
	PSRV_SIZE,
	PSRV_NOTHING
};

class Player;
class PlayerState
{
public:
	PlayerState::PlayerState(Player* player) : 
	_player(player) {}
	
	virtual ~PlayerState(void){}

	virtual void activate() = 0;
	virtual void deactivate() = 0;
	virtual int update() = 0;
	virtual char* ID() = 0;

protected:
	Player* _player;
};

#endif // _PLAYER_STATE_H_